// 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 最多出现两次 ，返回删除后数组的新长度。
// 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

int removeDuplicates(int* nums, int numsSize){
    int cnt = 0, k = 2;	//
    for (int i = 0; i < numsSize; i++) {
        // 前2个数直接保留；
        // 后面数如果与末尾的2个数相同则跳过，否则就记录
        if (cnt < k || nums[cnt - k] != nums[i]) 
			nums[cnt++] = nums[i];
    }
    return cnt;
}


int removeDuplicates(int* nums, int numsSize){
    int slow = 0, fast = 0;
    while (fast < numsSize) {
        if (slow < 2 || nums[slow - 2] != nums[fast]) 
            nums[slow++] = nums[fast];
        fast++;
    }
    return slow;
}